# friend-service/src/friend_service/database.py（完全同步版）
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker  # 同步Session
from common.config import settings

# 1. 同步连接URL：用 pymysql 驱动（替换 asyncmy）
SQLALCHEMY_DATABASE_URL = (
    f"mysql+pymysql://{settings.mysql_user}:{settings.mysql_password}@"
    f"{settings.mysql_host}:{settings.mysql_port}/{settings.mysql_db_friend}"
)

# 2. 同步引擎（无 async，用 create_engine）
engine = create_engine(
    SQLALCHEMY_DATABASE_URL,
    echo=False,
    pool_pre_ping=True  # 连接前检测，避免失效连接
)

# 3. 同步 Session 工厂（无 AsyncSession）
SessionLocal = sessionmaker(
    autocommit=False,
    autoflush=False,
    bind=engine
)

# 4. 模型基类（和同步一致）
Base = declarative_base()

# 5. 同步依赖：获取数据库连接（无 async/await）
def get_db():
    db = SessionLocal()
    try:
        yield db  # 同步生成器，无需 async
    finally:
        db.close()  # 同步关闭